how git works